#ifndef _graphy_public_h_
#define _graphy_public_h_

#ifdef WIN32
#define CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#endif // WIN32

#include <blitz/tinyvec-et.h>
#include <boost/assert.hpp>

typedef float float_t;
typedef blitz::TinyVector<float_t, 2> point2d_t;
typedef point2d_t* pPoint2d;

#define DEBUG
#define FREE_VERSION

#ifdef DEBUG
#define ASSERT(p) BOOST_ASSERT(p)
#define VERIFY(exp) BOOST_VERIFY(exp)
#else
#define ASSERT(p) do {} while (0)
#define VERIFY(exp) (exp)

#endif

#define dim(arr) (sizeof(arr)/sizeof(arr[0]))



#define NONCOPYABLE_OBJCT(class_name) private:\
class_name (const class_name &);\
class_name & operator=(const class_name &);


#define F_ZERO 1.0e-5
#define FLOAT_IS_NOT_ZERO(P)  (((P) > 0) ? (P)  > F_ZERO : (P) < (-F_ZERO))

const float_t SCREEN_WIDTH = 480.0;
const float_t SCREEN_HEIGHT = 320.0;

#ifndef	WIN32
#include "smart_ptr4ObjC.h"
const void *getNsAutoreleasePoolInstance();
#endif


#endif //_graphy_public_h_